Autor: Franciszek Saliński

Wstęp

Zadaniem jest stworzenie wizualizacji przedstawiającej mapę lub graf.

Za cel postawiłem sobie stworzenie interaktywnej mapy świata, która będzie przedstawiać liczbę zwycięzców Złotej Piłki, najważniejszej indywidualnej nagrody przyznawanej co roku dla najlepszego piłkarza świata, dla różnych krajów.

Źródło danych

df <- read.csv("BallonDor-GoldenBall_Winners_v2.csv") %>% select(-X)
head(df)
##   Year Rank             Player Country                    Team Points    Source
## 1 1956  1st   Stanley Matthews England               Blackpool     47 Wikipedia
## 2 1956  2nd Alfredo Di Stefano   Spain             Real Madrid     44 Wikipedia
## 3 1956  3rd       Raymond Kopa  France             Real Madrid     33 Wikipedia
## 4 1957  1st Alfredo Di Stefano   Spain             Real Madrid     72 Wikipedia
## 5 1957  2nd       Billy Wright England Wolverhampton Wanderers     19 Wikipedia
## 6 1957  3rd     Duncan Edwards England       Manchester United     16 Wikipedia

Agregacja i transformacja danych

Z racji, że w danych występowały nieistniejące obecnie kraje, należało je zamienić.

df %>%
  filter(Rank == "1st") %>% 
  mutate(Country = ifelse(
    Country == "West Germany", "Germany", Country
  )) %>% 
  mutate(Country = ifelse(
    Country == "Soviet Union", "Russia", Country
  )) %>%
  mutate(Country = ifelse(
    Country == "Czechoslovakia", "Czech Republic", Country
  )) %>%
  group_by(Country) %>% 
  summarise(n = n()) %>% 
  arrange(-n) -> winners

# Add other countries with 0 winners
all_countries <- map_data("world")$region
winners <- rbind(
  winners,
  data.frame(Country = setdiff(all_countries, winners$Country),
             n = rep(0, length(setdiff(all_countries, winners$Country))))
)
  
winners
## # A tibble: 255 × 2
##    Country         n
##    <chr>       <dbl>
##  1 Argentina       7
##  2 France          7
##  3 Germany         7
##  4 Netherlands     7
##  5 Portugal        7
##  6 Brazil          5
##  7 England         5
##  8 Italy           5
##  9 Russia          3
## 10 Spain           3
## # ℹ 245 more rows

Wizualizacja

map <- plot_ly(
  type = 'choropleth',
  locations = winners$Country,
  locationmode = 'country names',
  z = as.factor(winners$n),
  text = winners$Country
) %>% 
  layout(
    title = 'Liczba zwycięzców Złotej Piłki dla różnych krajów',
    geo = list(
      showcoastlines = TRUE,
      projection = list(type = 'orthographic')
  ))

# Wiem, że skala kolorów powinna być dyskretna, ale nie mam
# pojęcia jak to zrobić w plotly

map
## Warning: `marker.color` does not currently support multiple values.

Widzimy, że praktycznie wszyscy zwycięzcy plebiscytu pochodzili z Europy bądź Ameryki Południowej, jedynym wyjątkiem jest George Weah z Liberii. Nie jest to dziwne, gdyż na tych kontynentach piłka nożna jest najbardziej popularna.